//试题操作接口，负责试题的渲染，做题，显示答案等。

//-------------------------调用android接口-------------------------------
//页面加载完毕事件
function afterRender() {
	console.log('onLoad');
	window.location.href = 'hybird://method/onLoad';
}

function afterSetQuestion(result) {
	console.log('afterSetQuestion');
	window.location.href = 'hybird://method/afterSetQuestion?result=' + result;
}

/**
 * 跳转到下一题
 */
function next() {
	console.log('next');
	window.location.href = 'hybird://method/next';
}

/**
 * 跳转到上一题
 */
function preview() {
	console.log('preview');
	window.location.href = 'hybird://method/preview';
}

/**
 * 跳转到答题卡
 */
function showAnswerSheet() {
	console.log('showAnswerSheet');
	window.location.href = 'hybird://method/showAnswerSheet';
}

/**
 * 选择题：选项选中，保存状态
 */
function selectedOption(optionCode) {
	console.log('selectedOption:' + optionCode);
	window.location.href = 'hybird://method/edit?selected=' + optionCode;
}

function edit(field, value) {
	console.log('edit:'+field+ '=' + value);
	window.location.href = 'hybird://method/edit?'+field+'=' + value;
}

//-------------------------webview对外接口-------------------------------
/**
 * 显示答案
 */
function showAnswer(flag) {

	var panel = $('.answer');
	if (typeof flag === 'undefined') {
		if (panel.is(':hidden')) {
			flag = true;
		} else {
			flag = false;
		}
	}
	if (flag) {
		panel.show();
	} else {
		panel.hide();
	}
}

//-------------------------页面操作-------------------------------

var page = {
	STATE_NORMAL: 1, //未选择
	STATE_SELECTED: 2, //选中，答案未知
	STATE_RIGHT: 3, //选中，正确
	STATE_ERROR: 4, //选中，错误
	STATE_NORMAL_RIGHT: 5, //非选中，正确答案
	STATE_ERROR_RIGHT: 6, //多选题当前选中但其他选项选错，选中，正确答案

	MODE_YES: "YES", //单选或做题模式
	MODE_NO: "NO" //多选或浏览模式
};

/**
 * 添加错误原因及掌握程度单击事件
 */
function addSummarySelectClickListener() {

	var singleMode = $("#singleMode").val();
    $('.errorItem').change(function() {
        var id = $(this).attr("id");
        var value = $(this).val();
        if (id === 'errorReason') {
            edit('errorReason', value);
        } else if (id === 'levelAttained') {
            edit('levelAttained', value);
        }
    });

}

/**
 * 添加选项单击事件
 */
function addOptionsClickListener() {

	var singleMode = $("#singleMode").val();
	var optionsContainer = $('#options');

    $(optionsContainer).on('click', 'li', function() {
        changeOptionState($(this).attr("id"), page.STATE_SELECTED);
        if (singleMode == page.MODE_NO) {
            var ids = '';
            $('#options input[value="2"]').each(function() {
                ids+=this.id.charAt(0);
            });
            selectedOption(ids);
        }else {
            selectedOption($(this).attr("id"));
        }
    });

}

/**
 *  改变选项状态
 * @param option
 * @param state normal 1, selected 2, right 3, error 4, normal_right 5, error_right 6
 */
function changeOptionState(optionItem, state) {
	var optionInputElement = $("#" + optionItem + "Input");
	var singleMode = $("#singleMode").val();
    if (singleMode == page.MODE_YES) {
        //单选
        //$(li).siblings("input").val(page.STATE_NORMAL).end().prev("input").val(page.STATE_SELECTED);
        $("#" + optionItem).siblings("input").val(page.STATE_NORMAL);
        optionInputElement.val(page.STATE_SELECTED);
    } else {
        // 多选
        var currentStateValue = optionInputElement.val();
        if (currentStateValue == page.STATE_SELECTED) {
            optionInputElement.val(page.STATE_NORMAL);
        } else {
            optionInputElement.val(page.STATE_SELECTED);
        }
    }

}

/**
 * 设置选项状态
 *
 * @param optionKey
 */
function setOptionViewStatus(optionKey) {
	var optionValue = $("#" + optionKey).find(".option-value").html();
	if ($.trim(optionValue) == "${" + optionKey + "}") {
		$("#" + optionKey).hide(); //${A}
	} else {
		var optionsPanel = $("#optionsPanel");
		if (optionsPanel.css("display") == "none") {
			optionsPanel.css("display", "block");
		}

		$("#" + optionKey).show();
	}
}

/**
 * 设置ABCD....H的状态
 */
function setAllOptionsStatus() {
	setOptionViewStatus("A");
	setOptionViewStatus("B");
	setOptionViewStatus("C");
	setOptionViewStatus("D");
	setOptionViewStatus("E");
	setOptionViewStatus("F");
	setOptionViewStatus("G");
	setOptionViewStatus("H");
}

//添加分页按钮点击事件
function addPageBtnClickListener() {
	$('.pageBar .btn').on('click', function() {
		var id = $(this).attr("id");
		if (id === 'btn_preview') {
			preview();
		} else if (id === 'btn_next') {
			next();
		} else if (id === 'btn_answersheet') {
			showAnswerSheet();
		}
	});
}

window.onload = function() {

	addPageBtnClickListener();
	setAllOptionsStatus();
    addOptionsClickListener();
    addSummarySelectClickListener();
	afterRender();
};
